var app;
Date.prototype.Format = function(formatStr) {   
    var str = formatStr;   
    var Week = ['日','一','二','三','四','五','六'];  
  
    str=str.replace(/yyyy|YYYY/,this.getFullYear());   
    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
  
    str=str.replace(/MM/,(this.getMonth()+1)>9?this.getMonth().toString():'0' + (this.getMonth()+1));   
    str=str.replace(/M/g,(this.getMonth()+1)); 
  
    str=str.replace(/w|W/g,Week[this.getDay()]);   
  
    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
    str=str.replace(/d|D/g,this.getDate());   
  
    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
    str=str.replace(/h|H/g,this.getHours());   
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
    str=str.replace(/m/g,this.getMinutes());   
  
    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
    str=str.replace(/s|S/g,this.getSeconds());   
  
    return str;   
};


jQuery(document).ready(function() {
	app = new Vue({
		el : '#app',
		data : {
			currentPage : 1, 				// 当前页码
			totalNum : 0, 					// 总数
			pageSize : 10, 					// 每页大小
			executeForm : {
				dbSource : 'default',
				executeSql : '',
				tabPage : 'resultInfo',
				isTable : true,
				msgText : ''
			},
			queryColumns : [], 
			queryData : [],
			historyColums :[
			                {type: 'index',width: 60,align: 'center'},
			                {title:'数据源',key:'dbSource'},
			                {title:'执行语句',key:'executeSql'},
			                {title:'执行状态',key:'status',render: function(h, params){
			                	var status = params.row.status;
			                	var color = status ? 'green' : 'red';
	                            var text = status ? '成功' : '失败';
	                            return  h('Tag', {
	                                props: {
	                                    type: 'dot',
	                                    color: color
	                                }
	                            }, text);
			                }},
			                {title:'错误信息',key:'msgText'},
			                {title:'执行时间',key:'executeDateTime'}
			],
			historyData : []
		},
		methods : {
			executionSqlClick : function(){
				var data = getParameter();
				executionSql(data);
			},
			executionResetClick : function(){
				this.executeForm.dbSource = "default";
				this.executeForm.executeSql = "";
				this.executeForm.tabPage = "resultInfo";
				this.executeForm.isTable = true;
				this.executeForm.msgText = "";
			},
			changePage : function(page){
				this.currentPage = page;
				var data = getParameter();
				executionSql(data,true);
			}
		}
	});
});

function getParameter(){
	return {
		currentPage : app.currentPage,
		pageSize : app.pageSize,
		dbSource : app.executeForm.dbSource,
		executeSql : app.executeForm.executeSql
	};
}

function executionSql(data,ispage){
	var url = "/mobile/plugin/westvalley/tools/sql/jsp/executionSql.jsp";
	var o = ajaxJson(url,data);
	if(o){
		app.executeForm.msgText = o.msgText;
		if(o.isFlag){
			app.totalNum = o.totalNum;
			app.queryColumns = o.columns;
			app.queryData = o.datas;
		}
		app.executeForm.tabPage = o.tabPage;
		if(o.tabPage=="resultInfo") app.executeForm.isTable = true; else app.executeForm.isTable = false;
		if(!ispage){
			addHistoryRecord(data,o);
		}
	}else{
		app.executeForm.msgText = "服务异常！";
		app.executeForm.isTable = true;
	}
}

function addHistoryRecord(data,o){
	var historyRecord = {};
	historyRecord.dbSource = data.dbSource;
	historyRecord.executeSql = data.executeSql;
	historyRecord.executeDateTime = new Date().Format("yyyy-MM-dd HH:mm:ss");
	historyRecord.status = o.isFlag;
	historyRecord.msgText = o.msgText;
	app.historyData.unshift(historyRecord);
}


/**
 * 异步提交
 * @param url
 * @param data
 * @returns json
 */
function ajaxJson(url, data) {
	var datas = "";
	jQuery.ajax({
		type : "POST",
		url : url,
		data : data,
		dataType : "json",
		async : false,
		success : function(data) {
			datas = data;
		}
	});
	return datas;
}


